package healthGuides

import (
	"github.com/gin-gonic/gin"
	"savor_gin/controllers"
	. "savor_gin/errorType"
	"savor_gin/models"
	"strconv"
)

// 上传健康饮食指南
func AddGuide(c *gin.Context) {
	var guide models.HealthGuides
	if err := c.ShouldBindJSON(&guide); err != nil {
		controllers.SendResp(c, ParamBindError, nil)
		return
	}
	if err := guide.Create(); err != nil {
		controllers.SendResp(c, DataBaseError, nil)
		return
	}
	controllers.SendResp(c, OK, guide)
}

// 更新健康饮食指南
func UpdateGuideInfo(c *gin.Context) {
	guideId, err := strconv.Atoi(c.Param("guideId"))
	if err != nil {
		controllers.SendResp(c, ParamBindError, err)
		return
	}
	s := &models.HealthGuides{GuideID: uint64(guideId)}
	if err := c.ShouldBind(s); err != nil {
		controllers.SendResp(c, ParamBindError, err)
		return
	}
	if err := s.Update(); err != nil {
		controllers.SendResp(c, DataBaseError, err)
		return
	}
	controllers.SendResp(c, OK, s)
}

// 删除健康饮食指南
func DeleteGuide(c *gin.Context) {
	guideId, err := strconv.Atoi(c.Query("guideId"))
	if err != nil {
		controllers.SendResp(c, ParamBindError, err)
		return
	}
	s := &models.HealthGuides{GuideID: uint64(guideId)}
	if err := s.Delete(); err != nil {
		controllers.SendResp(c, DataBaseError, err)
		return
	}
	controllers.SendResp(c, OK, nil)
}

// 根据id获取健康饮食指南
func GetGuideById(c *gin.Context) {
	guideId, err := strconv.Atoi(c.Query("guideId"))
	if err != nil {
		controllers.SendResp(c, ParamBindError, err)
		return
	}
	if s, err := models.GetHealthGuidesById(uint64(guideId)); err != nil {
		controllers.SendResp(c, DataBaseError, err)
		return
	} else {
		controllers.SendResp(c, OK, s)
	}
}

// 查询个人健康饮食指南
func GetGuideListByUserId(c *gin.Context) {
	userId, err := strconv.Atoi(c.Query("userId"))
	if err != nil {
		controllers.SendResp(c, ParamBindError, err)
		return
	}
	if s, err := models.GetGuideByUserId(uint64(userId)); err != nil {
		controllers.SendResp(c, DataBaseError, err)
		return
	} else {
		controllers.SendResp(c, OK, s)
	}
}

// 模糊查询健康饮食指南
func GetGuideListLikeKey(c *gin.Context) {
	keyword := c.Query("keyword")
	if keyword == "" {
		controllers.SendResp(c, ParamBindError, nil)
		return
	}
	if s, err := models.GetGuideListByLike(keyword); err != nil {
		controllers.SendResp(c, DataBaseError, err)
		return
	} else {
		controllers.SendResp(c, OK, s)
	}
}

// 查询所有健康饮食指南
func GetGuideList(c *gin.Context) {
	if s, err := models.GetGuide(); err != nil {
		controllers.SendResp(c, DataBaseError, err)
		return
	} else {
		controllers.SendResp(c, OK, s)
	}
}
